草庐IT

HTTP 服务器

全部标签

http - ListenAndServe 和 Server.Serve

有什么区别ln,err:=net.Listen("tcp",addr)iferr!=nil{returnerr}gosrv.Serve(ln)和ln,err:=net.Listen("tcp",addr)iferr!=nil{returnerr}returnsrv.Serve(tcpKeepAliveListener{ln.(*net.TCPListener)})?我正在创建我自己的ListenAndServe(第一个代码片段),以便我可以在调用我的ListenAndServe后立即执行代码并向我的服务器发送请求。但是,我无法使用tcpKeepAliveListener,因为它未导出。

go - 通过 channel 处理 HTTP 请求的模式

我正在编写一个Web应用程序,其中有一个长时间运行的goroutine。我想通过channel将所有HTTP请求委托(delegate)给这个goroutine。我遇到的模式是://Internallongrunninggoroutinefor{select{casee:=我确实看到最后只有一个go-routine,所以并行性丢失了,但我同意。这种模式是正确的做法吗?还有哪些其他方法可以推荐? 最佳答案 Isthispatterntherightwayofdoingthis?假设您正在尝试在单个go例程中管理where状态,我会说不

go - 如何强制客户端使用 http/2? (而不是退回到 http 1.1)

我如何强制一个简单的Go客户端使用HTTP/2并防止它退回到HTTP1.1?我有一个简单的HTTP/2服务器在“本地主机”上运行,它在回复中返回请求的详细信息。以下是使用GoogleChrome浏览器对此URL的输出:https://localhost:40443/bananasIlikebananas!Method=GETURL=/bananasProto=HTTP/2.0Host=localhost:40443RequestURI=/bananas但这是我为我的Go客户端代码得到的。你可以看到它回落到HTTP1.1Ilikemonkeys!Method=GETURL=/monkey

javascript - 将用户名存储在从登录到服务器的数组中

我有一个小型的Go网络服务器,可以在用户登录时向他们显示数据。我试图实现的问题是让网页仅在特定用户登录时显示某些信息。例如,当管理员登录时,会有一个他们可以在网络上看到的仅限管理员的项目列表-页面。我遇到的问题是出于某种原因我的Go代码没有将用户名存储在我调用的数组中,所以当我将它传递给JavaScript时它是空白的。以下是我正在努力处理的代码的3个主要部分:main.gopackagemainimport"fmt"funcauthHandler(whttp.ResponseWriter,r*http.Request){r.ParseForm()usernameArray,hasUs

http - 如何通过代理服务器客户端使用自签名证书

我正在尝试创建一个可以通过代理服务器发送自签名HTTP请求的HTTP客户端。我试过这段代码,但我不确定这里是否有问题,下面的代码会起作用吗?funcCreateProxyClient(serverProxystring,sidstring,portProxyint)(*Client,error){http.DefaultTransport.(*http.Transport).TLSClientConfig=&tls.Config{InsecureSkipVerify:true}proxyUrl,_:=url.Parse(serverProxy+":"+strconv.Itoa(port

ssl - 自己的 https certbot web 服务器返回 404 页面未找到

我有非常简单的gohttpswebserver代码如下:packagemainimport(//"fmt"//"io""net/http""log")funcHelloServer(whttp.ResponseWriter,req*http.Request){w.Header().Set("Content-Type","text/plain")w.Write([]byte("Thisisanexampleserver.\n"))//fmt.Fprintf(w,"Thisisanexampleserver.\n")//io.WriteString(w,"Thisisanexamplese

go - jsonrpc 服务器接受请求的小写方法名称(用于大写注册服务)

我正在尝试编写一个jsonrpc服务器,它将接受请求的小写方法名称,例如Arith.multiply,并将它们正确地路由到相应的大写方法,例如Arith.Multiply。这可能吗?附言它是用于测试的生产服务器的轻量级克隆,API是固定的,包括小写的方法名称,所以我无法将请求的方法名称更改为大写。packagemainimport("log""net/http""github.com/gorilla/mux""github.com/gorilla/rpc""github.com/gorilla/rpc/json")typeArgsstruct{A,Bint}typeArithintty

ubuntu - Go 没有检测到来自 aws ubuntu 服务器的 SOMAXCONN 更改

我正在尝试使用k6对我的golangnet/http服务器进行压力测试.当我使用2048个虚拟用户访问我的awsubuntu服务器时,k6抛出“连接重置”。在互联网上调查,我发现可能是积压队列的问题。阅读一些计算器问题,我试图从sysctl.conf文件修改SOMAXCONN变量。将它从128修改为1024后,当我运行我的主要go程序时:packagemainimport("fmt""log""net/http""strings""golang.org/x/sys/unix")funcmain(){http.HandleFunc("/some_path",handler)fmt.Pri

azure - 从服务总线队列检索消息时出错

我尝试使用Go从Azure服务总线队列中提取消息,但在运行代码时出现错误。这是我的代码。funcExample_queue_receive(){ctx,cancel:=context.WithTimeout(context.Background(),10*time.Second)defercancel()connectionString:="Endpoint=sb://{my_service_name}.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey={my_sh

Golang http.NewRequest 总是返回 404 - Postman ok

我正在尝试编写一个post请求函数,将文件从golang服务器发送到客户端。代码从这里(golangPOSTdatausingtheContent-Typemultipart/form-data)抄了一点。无论出于何种原因,我总是收到“404页面未找到”,即使通过postman完成的相同请求正在到达终点并成功返回。这是奇怪的行为,我不太确定如何调试。(出于测试目的,我已经对URL进行了硬编码以访问本地运行的服务器。)这是我的代码:funcPostUpload(valuesmap[string]io.Reader,URLstring){fmt.Println("insidePostUpl